const path = require("path");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
module.exports = {
  // 相对路径
  entry: "./src/main.js",
  output: {
    // 文件名
    filename: "build.js",
    // 出口路径，绝对路径
    path: path.resolve(__dirname, "./build"),
    // webpack5输出目录全局设置
    // assetModuleFilename: "img/[name].[hash:6][ext]",
  },
  module: {
    rules: [
      {
        test: /\.css$/i,
        // 先用css-loader处理为css，后用style-loader处理（从后往前）
        use: [
          "style-loader",
          {
            loader: "css-loader",
            options: {
              // 表示css语法遇见import的时候回去几步进行处理
              // 0 表示只用css-loader处理
              // 1 表示回退到postcss-loader处理后继续处理
              importLoaders: 1,
            },
          },
          "postcss-loader",
        ],
      },
      {
        test: /\.less$/i,
        // 先用css-loader处理为css，后用style-loader处理（从后往前）
        use: [
          "style-loader",
          {
            loader: "css-loader",
            options: {
              // 表示css语法遇见import的时候回去几步进行处理
              // 0 表示只用css-loader处理
              // 1 表示回退到postcss-loader处理后继续处理
              importLoaders: 2,
            },
          },
          "postcss-loader",
          "less-loader",
        ],
      },
      {
        test: /\.(png|jpg|gif|svg)$/i,
        // 相当于file-loader
        // type: "asset/resource",
        // generator: {
        //   filename: "img/[name].[hash:6][ext]",
        // },
        // 相当于url-loader
        // type: "asset/inline",
        // 相当于手动限制
        type: "asset",
        generator: {
          filename: "img/[name].[hash:6][ext]",
        },
        parser: {
          dataUrlCondition: {
            maxSize: 100 * 1024,
          },
        },
      },
      {
        test: /\.(ttf|eot|woff2?)$/i,
        type: "asset/resource",
        generator: {
          filename: "font/[name].[hash:6][ext]",
        },
      },
    ],
  },
  plugins: [new CleanWebpackPlugin()],
};
